<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

function skinJS( $arquivo ) {
	echo site_url( 'js/' . $arquivo );
}

/**
 * Valida campos preenchidos conforme declaraÃ§Ã£o de seus nomes
 *
 * @param POST|GET|REQUEST $post
 * @return array
 *
 * @author Pedro Schneider (correaschneider@gmail.com)
 */
function Validar( $post )
{
	$campos = array();
	foreach ( $post as $key => $valor )
	{
		$campoDetalhe = explode( "_", $key );
		if ( ( $campoDetalhe[2] == 1 ) && ( $valor == ''  || $valor == 'Selecione') )
		{
			$campos["Erros"][$campoDetalhe[0]] = 'O campo ' . $campoDetalhe[0] . ' é um campo obrigatório!<br />';
		}
		else
		{
	
			if ( $valor != '' ) {
				switch ( $campoDetalhe[1] )
				{
					case 'CPWD':
							if ( $post[$campoDetalhe[3] . '_PWD_1'] != $valor ) {
								$campos["Erros"][$campoDetalhe[0] . '_MSG'] = 'Campos ' . $campoDetalhe[0] . ' e ' . $campoDetalhe[3] . ' devem ser iguais!<br />';
							}
							$valor = "";
						break;
					case 'PWD':
							$valor = md5( $valor );
						break;
					case 'BOOL':
						break;
					case 'EML':
							if ( !valid_email( $valor ) ) {
								$campos["Erros"][$campoDetalhe[0] . '_MSG'] = 'Campos ' . $campoDetalhe[0] . ' é inválido!<br />';
							}
						break;
					case 'TEL':
					case 'CPF':
							$valor = RetirarMascara($valor);
							if ( !is_numeric( $valor ) ) {
								$campos["Erros"][$campoDetalhe[0] . '_MSG'] = 'Campo ' . $campoDetalhe[0] . ' é inválido!<br />';
							}
						break;
					case 'DTA':
							$data = explode( '/', $valor );
							if ( count( $data ) == 3 )
								$valor = ( !empty( $valor ) ) ? FormatarData( $valor ) : Null;
							else {
								$campos["Erros"][$campoDetalhe[0] . '_MSG'] = 'Campos ' . $campoDetalhe[0] . ' é inválido!<br />';
							}
						break;
					default:
						break;
				}
			
				if ( $valor != '' )
					$campos["Validos"][$campoDetalhe[0]] = $valor;
			}
		}
		
	}
	
	if ( isset( $campos['Erros'] ) )
		$_SESSION['Erros'] = serialize( $campos['Erros'] );
	
	return $campos;
}

/**
 * Retira os caracteres nÃ£o permitidos
 *
 * @param string|array $dado
 * @param array $campos
 * @return string
 *
 * @author Pedro Schneider (correaschneider@gmail.com)
 */
function RetirarMascara( $dado, $campos = array() )
{
	if( is_array( $dado ) )
	{
		foreach( $campos as $campo )
		{
			$dado[$campo] = preg_replace( "/\D+/", "", $dado[$campo] );
		}
	}
	else
	{
		$dado = preg_replace( "/\D+/", "", $dado );
	}

	return $dado;
}

/**
 * Adiciona mascara, de acordo com o parametro
 *
 * @param integer	$texto
 * @param string	$mascara
 * @return string
 * 
 * @author Pedro Schneider (correaschneider@gmail.com)
 */
function AplicarMascara( $texto, $mascara = "(##) ####-####" )
{
	switch ( $mascara )
	{
		case 'telefone':
			$mascara = "(##) ####-####";
			break;
		case 'cpf':
			$mascara = "###.###.###-##";
			break;
		case 'cnpj':
			$mascara = "###.###.###/####-##";
			break;
		case 'cep':
			$mascara = "#####-###";
			break;
	}

	$retorno= "";
	$caracterTexto = 0;
	for( $caracterMascara = 0; $caracterMascara < strlen( $mascara ) && $caracterTexto < strlen( $texto ); $caracterMascara++ )
	{
		if ( $mascara[$caracterMascara] != '#' )
		{
			$retorno .= $mascara[$caracterMascara];
		}
		else
		{
			$retorno .= $texto[$caracterTexto];
			$caracterTexto++;
		}
	}
	return $retorno;
}

function montaSelect( $nomeCampo, $arrOption, $parametroID, $parametroTexto, $selecionado ) {
?>
	<select name="<?=$nomeCampo?>">
		<option value="">Selecione</option>
		<? foreach ( $arrOption as $Option ) {
				$selected = '';
				if ( $Option->$parametroID == $selecionado || ( count( $arrOption ) < 2 && $selecionado == '' ) )
    				$selected = 'selected="selected"';
		?>
			<option value="<?=$Option->$parametroID?>" <?=$selected?> ><?=$Option->$parametroTexto?></option>
		<? } ?>
	</select>
<?
}

function montaText( $nomeCampo, $valor, $max, $tipo = 'text' ) {
?>
	<input type="<?=$tipo?>" name="<?=$nomeCampo?>" value="<?=(!is_null($valor)) ? $valor : ''?>" maxlength="<?=$max?>" />
<?
}

function montaTextArea( $nomeCampo, $valor ) {
?>
	<textarea name="<?=$nomeCampo?>"><?=(!is_null($valor)) ? $valor : '';?></textarea>
<?
}

function montaTrText( $label, $nomeCampo, $valor, $max, $tipo = 'text' ) {
?>
<tr>
        <td>
        	<?php
        		echo $label;
        		
        		$campoDetalhe = explode( "_", $nomeCampo );
        		if ( $campoDetalhe[2] == 1 )
        			echo '<span class="obr" >*</span>';
        	?>:
        </td>
        <td>
			<? montaText( $nomeCampo, $valor, $max, $tipo ) ?>
		</td>
</tr>
<?
}

function montaTrTextArea( $label, $nomeCampo, $valor ) {
?>
<tr>
        <td>
        	<?php
        		echo $label;
        		
        		$campoDetalhe = explode( "_", $nomeCampo );
        		if ( $campoDetalhe[2] == 1 )
        			echo '<span class="obr" >*</span>';
        	?>:
        </td>
        <td>
			<? montaTextArea( $nomeCampo, $valor ) ?>
		</td>
</tr>
<?
}

function montaTrSelect( $label, $nomeCampo, $arrOption, $parametroID, $parametroTexto, $selecionado ) {
?>
<tr>
        <td>
        	<?php
        		echo $label;
        		
        		$campoDetalhe = explode( "_", $nomeCampo );
        		if ( $campoDetalhe[2] == 1 )
        			echo '<span class="obr" >*</span>';
        	?>:
        </td>
        <td>
			<? montaSelect( $nomeCampo, $arrOption, $parametroID, $parametroTexto, $selecionado ) ?>
		</td>
</tr>
<?
}

function montaSelectGroup( $nomeCampo, $arrOption, $parametroID, $parametroTexto, $selecionado ) {
?>
	<select name="<?php echo $nomeCampo; ?>">
		<option>Selecione</option>
		<?php foreach ( $arrOption as $key => $arrValues ) : ?>
		<optgroup label="<?php echo $key; ?>" value="<?php echo $arrValues[0]->LancamentoTipoID; ?>">
			<?php
				foreach ( $arrValues as $Option ) :
					$selected = '';
					if ( $Option->$parametroID == $selecionado || ( count( $arrValues ) < 1 && $selecionado == null ) )
						$selected = 'selected="selected"';
			?>
			<option value="<?php echo $Option->$parametroID; ?>" <?php echo $selected; ?> ><?php echo $Option->$parametroTexto; ?></option>
			<?php endforeach; ?>
		</optgroup>
		<?php endforeach; ?>
	</select>
<?php
}

function montaTrSelectGroup( $label, $nomeCampo, $arrOption, $parametroID, $parametroTexto, $selecionado ) {
?>
<tr>
        <td>
        	<?php
        		echo $label;
        		
        		$campoDetalhe = explode( "_", $nomeCampo );
        		if ( $campoDetalhe[2] == 1 )
        			echo '<span class="obr" >*</span>';
        	?>:
        </td>
        <td>
			<? montaSelectGroup( $nomeCampo, $arrOption, $parametroID, $parametroTexto, $selecionado ) ?>
		</td>
</tr>
<?
}

/**
 * CONVERTE UMA DATA DE AAAA-MM-DD PARA DD/MM/AAAA E VICE-VERSA
 * PARA CONVERSÃ•ES DE AAAA-MM-DD PARA DD/MM/AAAA PODE SER PASSADO UM
 * SEPARADOR, SE FOR PASSADO true PARA $reduzido O ANO FICARÃ� COM
 * 2 DÃ�GITOS. PASSANDO true PARA $extenso A DATA SERÃ� RETORNADA POR
 * EXTENSO. TODAS AS SAÃ�DAS LEVAM EM CONSIDERAÃ‡ÃƒO A DIRETIVA DE
 * IDIOMA ATUAL.
 *
 * @param string $data
 * @param string $separador
 * @param boolean $reduzido
 * @param boolean $extenso
 *
 * @return string
 *
 * @example FormatarData("04/02/2008");							// 2008-02-04
 * @example FormatarData("04.02.2008 12:00:00");				// 2008-02-04 12:00:00
 * @example FormatarData("2008-02-04 12:00:00", ".");			// 04.02.2008 12:00:00
 * @example FormatarData("2008-02-04", NULL, TRUE);				// 04/02/08
 * @example FormatarData("2008-02-04", NULL, NULL, TRUE);		// 4 de fevereiro de 2008
 *
 * @author Pedro Schneider (correaschneider@gmail.com)
 */

function FormatarData($data, $separador = null, $reduzido = false, $somenteData = false) 
{
	if ( preg_match( "/^([0-9]{4}).([0-9]{1,2}).([0-9]{1,2})(.*)?$/", $data, $registros ) ) {
		// AAAA-MM-DD PARA DD/MM/AAAA

		$data = array( $registros[3], $registros[2], $registros[1] );

		if( empty( $separador ) )
			$separador = "/";

		if( $reduzido )
			$data[2] = substr($data[2], 2);

		if( empty( $registros[4] ) === false )
			$data .= $registros[4];

		if( $somenteData ) {
			$data = explode(" ", $data);
			$data = $data[0];
		}
	} else if ( preg_match( "/^([0-9]{2}).([0-9]{2}).([0-9]{2,4})(.*)?$/", $data, $registros ) || preg_match( "/^([0-9]{1}).([0-9]{1}).([0-9]{2,4})(.*)?$/", $data, $registros ) ) {
		// DD/MM/AAAA PARA AAAA-MM-DD

		if ( empty( $separador ) )
		$separador = "-";

		$data = array( $registros[3], $registros[2], $registros[1] );

		// TRANSFORMA ANO DE 2 DÍGITOS PARA 4

		if ( strlen( $data[0] ) == 2 )
		$data[0] = date( "Y", strtotime( $data[1] . "/" . $data[2] . "/" . $data[0] ) );
	}
	else
		return null;

	$data = implode( $separador, $data );

	return $data;
}

function TratarPostAndroid( $campos, $chave ) {
	$retorno = array();
	foreach ( $campos as $key => $value )
		if( ( $key != 'DatabaseID' && $key != $chave ) || ( $key == $chave && $value != 0 ) )
			$retorno[ $key ] = $value;
	return $retorno;
}

function MostraErros( $validacao ) {
	if ( isset( $validacao ) && count( $validacao ) > 0 ) {
?>
		<div class="deb">
<?php
		foreach( $validacao as $linha ) {
			if( $linha != '' ) {
				echo $linha;
				echo '<br />';
			}
		}
?>
		</div>
<?php
	}
}
